home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gigarom 1
/
Gigarom Macintosh Archives (Quantum Leap)(CDRM1080320)(1993).iso
/
FILES
/
DEV
/
C-H
/
CHexDmpDA.cpt
/
Hex Dump DA
/
chars.HexDumpDA.c
< prev
next >
Wrap
Text File
|
1988-06-14
|
2KB
|
119 lines
/*
* chars.HexDumpDA.c
*
*/
extern long fileSize;
char *dp;
char *countPtr;
AppendString(s)
register char *s;
{
register char i, len;
*countPtr += (len = *s++);
for (i=0; i<len; i++) *dp++ = *s++;
}
#define CharOf(c) ((((c)>=0x20)&&((c)<=0xCF))?(c):'.')
char hexChar[16] = {'0','1','2','3','4','5','6','7',
'8','9','A','B','C','D','E','F'};
DrawHex6(i)
register unsigned long i;
{
register int mod = 20;
register int j;
register unsigned long mask = 0x000FFFFF;
for (j=6;j>0; --j) {
(*countPtr)++;
*dp++ = (hexChar[i>>mod]);
mod -= 4;
i &= mask;
mask >>= 4;
}
}
DrawHex4(i)
register unsigned int i;
{
register int mod = 12;
register int j;
register unsigned int mask = 0x0FFF;
for (j=4;j>0; --j) {
(*countPtr)++;
*dp++ = hexChar[i>>mod];
mod -= 4;
i &= mask;
mask >>= 4;
}
}
Four_Blanks()
{
(*countPtr) += 4;
*dp++ = ' ';
*dp++ = ' ';
*dp++ = ' ';
*dp++ = ' ';
}
Fill_Line(i, cptr, display)
long i;
register char *cptr;
char *display;
{
register int k;
register int *ptr;
register char c;
register long n;
ptr = (int *)cptr;
dp = countPtr = display;
*dp++=0;
n = i;
if (n >= fileSize) return;
DrawHex6(i);
AppendString("\p: ");
for (k=0;k<4;k++) {
if (n>=fileSize)
Four_Blanks();
else
DrawHex4(*ptr++);
n += 2;
(*countPtr)++;
*dp++ = ' ';
}
(*countPtr)++;
*dp++ = ' ';
for (k=0;k<4;k++) {
if (n>=fileSize)
Four_Blanks();
else
DrawHex4(*ptr++);
n += 2;
(*countPtr)++;
*dp++ = ' ';
}
AppendString("\p ");
n = i;
for (k=0; k<16; k++) {
c = *cptr++;
if (++n>fileSize) return;
(*countPtr)++;
*dp++ = CharOf(c);
}
}